namespace CLELCore.Executable
{
	public class StandardFields
	{
		public const short PE32_MAGIC = 0x10b;
		public const short PE32PLUS_MAGIC = 0x20b;

		public const int PE32_STANDARD_FIELDS_SIZE = 0x1c;
		public const int PE32PLUS_STANDARD_FIELDS_SIZE = 0x18;
		
		private short _magic;
		private byte _majorlinkerversion;
		private byte _minorlinkerversion;
		private int _sizeofcode;
		private int _sizeofinitalizeddata;
		private int _sizeofuninitalizeddata;
		private int _addressofentrypoint;
		private int _baseofcode;
		private int _baseofdata;

		public short Magic
		{
			get
			{
				return _magic;
			}
			set
			{
				_magic = value;
			}
		}
		public byte MajorLinkerVersion
		{
			get
			{
				return _majorlinkerversion;
			}
			set
			{
				_majorlinkerversion = value;
			}
		}
		public byte MinorLinkerVersion
		{
			get
			{
				return _minorlinkerversion;
			}
			set
			{
				_minorlinkerversion = value;
			}
		}
		public int SizeOfCode
		{
			get
			{
				return _sizeofcode;
			}
			set
			{
				_sizeofcode = value;
			}
		}
		public int SizeOfInitalizedData
		{
			get
			{
				return _sizeofinitalizeddata;
			}
			set
			{
				_sizeofinitalizeddata = value;
			}
		}
		public int SizeOfUninitalizedData
		{
			get
			{
				return _sizeofuninitalizeddata;
			}
			set
			{
				_sizeofuninitalizeddata = value;
			}
		}
		public int AddressOfEntryPoint
		{
			get
			{
				return _addressofentrypoint;
			}
			set
			{
				_addressofentrypoint = value;
			}
		}
		public int BaseOfCode
		{
			get
			{
				return _baseofcode;
			}
			set
			{
				_baseofcode = value;
			}
		}
		public int BaseOfData
		{
			get
			{
				return _baseofdata;
			}
			set
			{
				_baseofdata = value;
			}
		}
		public StandardFields()
		{
		}
	}
}
